Mapping content delivery

ABSTRACT

Aspects of the present disclosure relate to mapping content delivery. A client device provides, to a map management server, a request for a map of a geographic region. The client device receives, from the map management server, an identification of tiles for the map. The client device provides, to a first tile server, a request for the tiles for the map. In response to receiving the tiles from the first tile server: the client device displays the map of the geographic region based on the tiles.

PRIORITY CLAIM

This application is a continuation of U.S. patent application Ser. No.15/658,054, filed on Jul. 24, 2017, entitled “MAPPING CONTENT DELIVERY,”which claims priority to U.S. Provisional Patent Application No.62/369,977, filed on Aug. 2, 2016, entitled “MAPPING CONTENT DELIVERY,”the entire content of which is incorporated herein by reference.

TECHNICAL FIELD

The subject matter disclosed herein relates to content delivery to aclient device. In particular, example embodiments may relate todelivering, to a client device, a map requested at the client device.

BACKGROUND

A mapping application of a client device may access maps based on tilesthat are stored on several different tile servers. One challenge isselecting an appropriate tile server to use to generate a requested map,as the tiles for the map may be stored at multiple different tileservers.

BRIEF DESCRIPTION OF THE DRAWINGS

Various ones of the appended drawings merely illustrate exampleembodiments of the present inventive subject matter and cannot beconsidered as limiting its scope.

FIG. 1 is a block diagram of an example system in which mapping contentis delivered, according to some embodiments.

FIGS. 2A-2B is a flow chart illustrating an example method fordisplaying a map at a client device, according to some embodiments.

FIG. 3 is a block diagram illustrating components of a machine able toread instructions from a machine-readable medium, according to someembodiments.

DETAILED DESCRIPTION

Reference will now be made in detail to specific example embodiments forcarrying out the inventive subject matter. Examples of these specificembodiments are illustrated in the accompanying drawings, and specificdetails are set forth in the following description in order to provide athorough understanding of the subject matter. It will be understood thatthese examples are not intended to limit the scope of the claims to theillustrated embodiments. On the contrary, they are intended to coversuch alternatives, modifications, and equivalents as may be includedwithin the scope of the disclosure. Examples merely typify possiblevariations. Unless explicitly stated otherwise, components and functionsare optional and may be combined or subdivided, and operations may varyin sequence or be combined or subdivided. In the following description,for purposes of explanation, numerous specific details are set forth toprovide a thorough understanding of example embodiments. It will beevident to one skilled in the art, however, that the present subjectmatter may be practiced without these specific details.

As noted above, a mapping application of a client device may access mapsbased on tiles that are stored on several different tile servers. Onechallenge is selecting an appropriate tile server to use to generate arequested map, as the tiles may be stored at multiple different tileservers. In some cases, the mapping application may be used to reducethe latency between a time when the request is provided to the tileserver(s) and a time when the tiles are provided to the client device.In some aspects, the mapping application resides at the client device.

As used herein, the terms “tile” or “map tile” encompass their plain andordinary meaning. A tile may store a portion of a map at a given zoomlevel as an image taking up a predefined area measured in pixels (e.g.,256 pixels by 256 pixels). In one example, a first tile includes a mapof the United States showing only major cities and major interstatehighways. A second tile includes a map of California showing large andmid-sized cities with interstate and major state highways. A third tileincludes a map of San Francisco showing its largest streets. A fourthtile includes a map of the Marina neighborhood of San Francisco andshows all of the streets, parks, and major landmarks in thatneighborhood. Additional tiles may be used to overlay the map of theMarina neighborhood (or other maps) with topography, business names andgeographic locations, real estate prices, and the like.

FIG. 1 is a block diagram of an example system 100 in which mappingcontent is delivered. As shown, the system 100 includes a map managementserver 110, a client device 120.1 geographically located in Maine, aclient device 120.2 geographically located in Boston, Mass., a tileserver 130.1 for Maine geographically located in Maine, a tile server130.2 for New England geographically located in Boston, a tile server130.3 for the United States of America (USA) geographically located inNew York City (NYC), and a tile server 130.4 for the worldgeographically located in Paris, France.

Each client device 120.a (where a is a number between 1 and 2) includesa mapping application 125.a. The mapping application 125.a is configuredto receive a request for a map of a geographic region, determine (e.g.,by consulting the map management server 110, as discussed below) whichtiles are required to generate a map of a geographic region, and todisplay the map of the geographic region. More details of the operationof the mapping application 125.a are provided in conjunction with FIGS.2A-2B.

The Maine tile server 130.1 includes tiles 135.1 for Maine. The NewEngland tile server 130.2 includes tiles 135.2 for New England. The USAtile server 130.3 includes tiles 135.3 for the USA. The world tileserver 130.4 includes tiles 135.4 for the world. In FIG. 1 , aspects ofthe subject technology are illustrated in conjunction with one mapmanagement server 110, two client devices 120, and four tile servers130. However, the subject technology may be implemented with any numberof map management server(s) 110, client devices 120, or tile servers130. The tiles 135.b (where b is a number between 1 and 4) of the tileservers 130.b may be stored at a predetermined zoom level or at multipledifferent zoom levels. In one example embodiment, the world tiles 135.4include the USA tiles 135.3 and other tiles. The USA tiles 135.3 includethe New England tiles 135.2 and other tiles. The New England tiles 135.2include the Maine tiles 135.1 and other tiles. (New England includes thestates of Maine, New Hampshire, Vermont, Massachusetts, Rhode Island,and Connecticut.) Thus, the world tile server 130.4 occupies more memorythan the USA tile server 130.3, which occupies more memory than the NewEngland tile server 130.2, which occupies more memory than the Mainetile server 130.1. As set forth above, in some aspects, each tile server130.1-4 stores geographic information (e.g., tiles) for a differentgeographic area.

The map management server 110 is configured to receive, from a clientdevice 120.a, a request for a map of a geographic region. The mapmanagement server 110 is configured to provide to the client device120.a, in response to the request for the map, an identification oftiles for the map.

Each tile server 130.b is configured to receive, from a client device120.a, a request for tiles for a map. In response to this request, thetile server 130.b confirms, to the client device 120.a, whether the tileserver 130.b is capable of providing the tiles. If the tile server 130.bis capable of providing the tiles, the tile server 130.b provides thetiles to the client device 120.a.

According to some example embodiments, the client device 120.1 in Maine,while executing the mapping application 125.1, requests a map of a partof Maine from the map management server 110. The map management server110 notifies the client device 120.1 of the tiles that the client device120.1 would need for the requested map (e.g., road tiles) and, in somecases, provides some other data (e.g., objects on the map). The clientdevice 120.1 sends the request for the tiles to the Maine tile server130.1. If the Maine tile server 130.1 successfully returns the requestedtiles to the client device 120.1, the client device 120.1 displays themap of the part of Maine based on the tiles. If the Maine tile server130.1 fails to return the requested tiles, the client device 120.1provides the request for tiles to the other tile servers 130.2-4. Theclient device 120.1 receives from the New England tile server 130.2 (or,alternatively, one of the other tile servers 130.3-4) an indication thatthe New England tile server 130.2 is capable of providing the requestedtiles. The client device 120.1 cancels, in response to the indicationfrom the New England tile server 130.2, the request for the tiles fromeach other tile server 130.3-4. The client device 120.1 receives thetiles from the New England tile server 130.2. The client device 120.1displays the map of the part of Maine based on the tiles.

In the example embodiments described above, there is a “waterfall” so ifthe first tile server (e.g., the closest tile server or the Maine tileserver 130.1) does not have the tiles, the client device 120.1 sends therequest to the other tile servers 130.2-4. Once the client device 120.1receives a confirmation that one of the other tile servers 130.2-4 iscapable of handling the request, the outstanding requests are cancelled.

According to some aspects, each tile server 130.b includes a manualcache and a least recently used (LRU) cache. The manual cache includestiles for maps that are likely to be commonly requested, for example,road maps for major highways and large cities. For example, the Mainetile server 130.1 may include, in its manual cache, road tiles for theinterstate highways (e.g., I-95 and I-295) in Maine and road tiles forthe largest cities (e.g., Portland, Lewiston, and Bangor) in Maine. TheLRU cache is based on recent requests. The LRU cache builds up a storeof quickly accessible relevant tiles that can be overwritten. Forexample, if a festival occurs in Augusta, Me., and maps of Augusta arerequested frequently from the Maine tile server 130.1, tilesrepresenting Augusta may be stored in the LRU cache of the Maine tileserver 130.1.

According to some examples, the client device 120.1 in Maine isaccessing a satellite imagery map of Saco, Me. A user of the clientdevice 120.1 (located in Maine) is collaboratively working on the mapwith a user of the client device 120.2 (located in Boston). The user ofthe client device 120.1 decides to change the base layer tiles fromsatellite imagery to roads. The client device 120.1 makes that change bypulling the road tiles for Saco from the Maine tile server 130.1. Thechange is pushed to the map management server 110. The user of theclient device 120.2, which is located in Boston, opens the collaborativemap. The client device 120.2 requests the map from the map managementserver 110, but gets the tiles from the New England tile server 130.2instead of the Maine tile server 130.1 (as the New England tile serveris located in Boston, which is more quickly accessible to the Bostonclient device 130.2 than the Maine tile server 130.1). The mapmanagement server 110 informs the Boston client device 130.2 to “pullroad tiles,” but does not specify whether the road tiles are to bepulled from the Maine tile server 130.1, the New England tile server130.2, or another tile server.

The geographic locations provided in this document are examples and arenot intended to limit the subject technology. The subject technology maybe implemented with client devices and servers located in any geographiclocation(s), not necessarily those specified herein. Some aspects of thesubject technology may be implemented on virtual machine(s) that lackgeographic location(s).

FIGS. 2A-2B are a flow chart illustrating an example method fordisplaying a map at the client device 120.1 executing the mappingapplication 125.1. The method 200 may be implemented at the clientdevice 120.1 within the system 100, and is described herein as beingimplemented at the client device 120.1. However, in alternativeembodiments, the method 200 may be implemented at other machine(s) orwithin other system(s). The method 200 is not limited to beingimplemented at the client device 120.1 as described herein.

As shown in FIG. 2A, at operation 205, the client device 120.1 provides,to the map management server 110 and from the client device 120.1, arequest for a map of a geographic region.

At operation 210, the client device 120.1 receives, from the mapmanagement server 110 in response to the request for the map, anidentification of tiles for the map.

At operation 215, the client device 120.1 provides, to a first tileserver 130.1 and from the client device 120.1, a request for the tilesfor the map.

At operation 220, the client device 120.1 determines whether the clientdevice 120.1 receives, from the first tile server 130.1, the tiles inresponse to the request for the tiles. The client device 120.1 maydetermine that it has not received the tiles upon receiving a failuremessage from the first tile server 130.1 or upon failing to receive aresponse from the first tile server during a threshold time period(e.g., 1 second, 2 seconds, 10 seconds, etc.) after providing therequest to the first tile server. If the tiles are received, the method200 continues to operation 225. If the tiles are not received, themethod 200 continues to operation 230 of FIG. 2B.

At operation 225, in response to receiving the tiles from the first tileserver 130.1, the client device 120.1 provides for display of the map ofthe geographic region based on the tiles. After operation 225, themethod 200 ends.

As shown in FIG. 2B, at operation 230, in response to failing to receivethe tiles from the first tile server 130.1, the client device 120.1provides multiple new requests for the tiles. Each of the new requestsis directed to one of multiple tile servers 130.2-4.

At operation 235, the client device 120.1 receives, from a second tileserver 130.2 from among the multiple tile servers 130.2-4, an indicationthat the second tile server 130.2 is capable of providing the tiles forthe map.

At operation 240, the client device 120.1 cancels, in response to theindication from the second tile server 130.2, the request for the tilesfrom each other tile server 130.3-4 in the multiple tile servers130.2-4.

At operation 245, the client device 120.1 receives the tiles from thesecond tile server 130.2.

At operation 250, the client device 120.1 provides for display of themap of the geographic region based on the tiles.

According to some embodiments, the first tile server is selected from aset of servers including the first tile server and the multiple tileservers. The first tile server is selected based on a geographicdistance between the client device and the first tile server being lessthan a geographic distance between the client device and each other tileserver in the set.

FIG. 3 is a block diagram illustrating components of a machine 300,according to some example embodiments, able to read instructions from amachine-readable medium (e.g., a machine-readable storage medium) andperform any one or more of the methodologies discussed herein. Themachine 300 may correspond to one or more of the map management server110, the client device(s) 120.1-2, or the tile server(s) 130.1-4.Specifically, FIG. 3 shows a diagrammatic representation of the machine300 in the example form of a system, within which instructions 302(e.g., software, a program, an application, an applet, an app, a driver,or other executable code) for causing the machine 300 to perform any oneor more of the methodologies discussed herein may be executed. Forexample, the instructions 302 include executable code that causes themachine 300 to execute the method 200. In this way, these instructionstransform the general, non-programmed machine into a particular machineprogrammed to carry out the described and illustrated functions in themanner described herein. The machine 300 may operate as a standalonedevice or may be coupled (e.g., networked) to other machines.

By way of non-limiting example, the machine 300 may comprise orcorrespond to a television, a computer (e.g., a server computer, aclient computer, a personal computer (PC), a tablet computer, a laptopcomputer, or a netbook), a set-top box (STB), a personal digitalassistant (PDA), an entertainment media system (e.g., an audio/videoreceiver), a cellular telephone, a smart phone, a mobile device, awearable device (e.g., a smart watch), a portable media player, or anymachine capable of outputting audio signals and capable of executing theinstructions 302, sequentially or otherwise, that specify actions to betaken by machine 300. Further, while only a single machine 300 isillustrated, the term “machine” shall also be taken to include acollection of machines 300 that individually or jointly execute theinstructions 302 to perform any one or more of the methodologiesdiscussed herein.

The machine 300 may include processors 304, memory 306, storage unit 308and I/O components 310, which may be configured to communicate with eachother such as via a bus 312. In an example embodiment, the processors304 (e.g., a central processing unit (CPU), a reduced instruction setcomputing (RISC) processor, a complex instruction set computing (CISC)processor, a graphics processing unit (GPU), a digital signal processor(DSP), an application specific integrated circuit (ASIC), aradio-frequency integrated circuit (RFIC), another processor, or anysuitable combination thereof) may include, for example, processor 314and processor 316 that may execute instructions 302. The term“processor” is intended to include multi-core processors that maycomprise two or more independent processors (sometimes referred to as“cores”) that may execute instructions contemporaneously. Although FIG.3 shows multiple processors, the machine 300 may include a singleprocessor with a single core, a single processor with multiple cores(e.g., a multi-core process), multiple processors with a single core,multiple processors with multiples cores, or any combination thereof.

The memory 306 (e.g., a main memory or other memory storage) and thestorage unit 308 are both accessible to the processors 304 such as viathe bus 312. The memory 306 and the storage unit 308 store theinstructions 302 embodying any one or more of the methodologies orfunctions described herein. The instructions 302 may also reside,completely or partially, within the memory 306, within the storage unit308, within at least one of the processors 304 (e.g., within theprocessor's cache memory), or any suitable combination thereof, duringexecution thereof by the machine 300. Accordingly, the memory 306, thestorage unit 308, and the memory of processors 304 are examples ofmachine-readable media.

As used herein, “machine-readable medium” means a device able to storeinstructions and data temporarily or permanently and may include, but isnot be limited to, random-access memory (RAM), read-only memory (ROM),buffer memory, flash memory, optical media, magnetic media, cachememory, other types of storage (e.g., erasable programmable read-onlymemory (EEPROM)), or any suitable combination thereof. The term“machine-readable medium” should be taken to include a single medium ormultiple media (e.g., a centralized or distributed database, orassociated caches and servers) able to store instructions 302. The term“machine-readable medium” shall also be taken to include any medium, orcombination of multiple media, that is capable of storing instructions(e.g., instructions 302) for execution by a machine (e.g., machine 300),such that the instructions, when executed by one or more processors ofthe machine 300 (e.g., processors 304), cause the machine 300 to performany one or more of the methodologies described herein (e.g., methods 200and 300). Accordingly, a “machine-readable medium” refers to a singlestorage apparatus or device, as well as “cloud-based” storage systems orstorage networks that include multiple storage apparatus or devices. Theterm “machine-readable medium” excludes signals per se.

Furthermore, the “machine-readable medium” is non-transitory in that itdoes not embody a propagating signal. However, labeling the tangiblemachine-readable medium as “non-transitory” should not be construed tomean that the medium is incapable of movement—the medium should beconsidered as being transportable from one real-world location toanother. Additionally, since the machine-readable medium is tangible,the medium may be considered to be a machine-readable device.

The I/O components 310 may include a wide variety of components toreceive input, provide output, produce output, transmit information,exchange information, capture measurements, and so on. The specific I/Ocomponents 310 that are included in a particular machine will depend onthe type of machine. For example, portable machines such as mobilephones will likely include a touch input device or other such inputmechanisms, while a headless server machine will likely not include sucha touch input device. It will be appreciated that the I/O components 310may include many other components that are not specifically shown inFIG. 3 . The I/O components 310 are grouped according to functionalitymerely for simplifying the following discussion and the grouping is inno way limiting. In various example embodiments, the I/O components 310may include input components 318 and output components 320. The inputcomponents 318 may include alphanumeric input components (e.g., akeyboard, a touch screen configured to receive alphanumeric input, aphoto-optical keyboard, or other alphanumeric input components), pointbased input components (e.g., a mouse, a touchpad, a trackball, ajoystick, a motion sensor, or other pointing instrument), tactile inputcomponents (e.g., a physical button, a touch screen that provideslocation and/or force of touches or touch gestures, or other tactileinput components), audio input components, and the like. The outputcomponents 320 may include visual components (e.g., a display such as aplasma display panel (PDP), a light emitting diode (LED) display, aliquid crystal display (LCD), a projector, or a cathode ray tube (CRT)),acoustic components (e.g., speakers), haptic components (e.g., avibratory motor, resistance mechanisms), other signal generators, and soforth.

Communication may be implemented using a wide variety of technologies.The I/O components 310 may include communication components 322 operableto couple the machine 300 to a network 324 or devices 326 via coupling328 and coupling 330, respectively. For example, the communicationcomponents 322 may include a network interface component or othersuitable device to interface with the network 324. In further examples,communication components 322 may include wired communication components,wireless communication components, cellular communication components,near field communication (NFC) components, Bluetooth® components (e.g.,Bluetooth® Low Energy), WiFi® components, and other communicationcomponents to provide communication via other modalities. The devices326 may be another machine or any of a wide variety of peripheraldevices (e.g., a peripheral device coupled via a Universal Serial Bus(USB)).

Modules, Components and Logic

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied on a machine-readable medium or ina transmission signal) or hardware modules. A hardware module is atangible unit capable of performing certain operations and may beconfigured or arranged in a certain manner. In example embodiments, oneor more computer systems (e.g., a standalone, client, or server computersystem) or one or more hardware modules of a computer system (e.g., aprocessor or a group of processors) may be configured by software (e.g.,an application or application portion) as a hardware module thatoperates to perform certain operations as described herein.

In various embodiments, a hardware module may be implementedmechanically or electronically. For example, a hardware module maycomprise dedicated circuitry or logic that is permanently configured(e.g., as a special-purpose processor, such as a field-programmable gatearray (FPGA) or an application-specific integrated circuit (ASIC)) toperform certain operations. A hardware module may also compriseprogrammable logic or circuitry (e.g., as encompassed within ageneral-purpose processor or other programmable processor) that istemporarily configured by software to perform certain operations. Itwill be appreciated that the decision to implement a hardware modulemechanically, in dedicated and permanently configured circuitry, or intemporarily configured circuitry (e.g., configured by software) may bedriven by cost and time considerations.

Accordingly, the term “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired) or temporarilyconfigured (e.g., programmed) to operate in a certain manner and/or toperform certain operations described herein. Considering embodiments inwhich hardware modules are temporarily configured (e.g., programmed),each of the hardware modules need not be configured or instantiated atany one instance in time. For example, where the hardware modulescomprise a general-purpose processor configured using software, thegeneral-purpose processor may be configured as respective differenthardware modules at different times. Software may accordingly configurea processor, for example, to constitute a particular hardware module atone instance of time and to constitute a different hardware module at adifferent instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multipleof such hardware modules exist contemporaneously, communications may beachieved through signal transmission (e.g., over appropriate circuitsand buses that connect the hardware modules). In embodiments in whichmultiple hardware modules are configured or instantiated at differenttimes, communications between such hardware modules may be achieved, forexample, through the storage and retrieval of information in memorystructures to which the multiple hardware modules have access. Forexample, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions. The modulesreferred to herein may, in some example embodiments, compriseprocessor-implemented modules.

Similarly, the methods described herein may be at least partiallyprocessor-implemented. For example, at least some of the operations of amethod may be performed by one or more processors orprocessor-implemented modules. The performance of certain of theoperations may be distributed among the one or more processors, not onlyresiding within a single machine, but deployed across a number ofmachines. In some example embodiments, the processor or processors maybe located in a single location (e.g., within a home environment, anoffice environment, or a server farm), while in other embodiments theprocessors may be distributed across a number of locations.

The one or more processors may also operate to support performance ofthe relevant operations in a “cloud computing” environment or as a“software as a service” (SaaS). For example, at least some of theoperations may be performed by a group of computers (as examples ofmachines including processors), with these operations being accessiblevia a network (e.g., the Internet) and via one or more appropriateinterfaces (e.g., APIs).

Electronic Apparatus and System

Example embodiments may be implemented in digital electronic circuitry,or in computer hardware, firmware, or software, or in combinations ofthem. Example embodiments may be implemented using a computer programproduct, for example, a computer program tangibly embodied in aninformation carrier, for example, in a machine-readable medium forexecution by, or to control the operation of, data processing apparatus,for example, a programmable processor, a computer, or multiplecomputers.

A computer program can be written in any form of programming language,including compiled or interpreted languages, and it can be deployed inany form, including as a standalone program or as a module, subroutine,or other unit suitable for use in a computing environment. A computerprogram can be deployed to be executed on one computer or on multiplecomputers at one site, or distributed across multiple sites andinterconnected by a communication network.

In example embodiments, operations may be performed by one or moreprogrammable processors executing a computer program to performfunctions by operating on input data and generating output. Methodoperations can also be performed by, and apparatus of exampleembodiments may be implemented as, special purpose logic circuitry(e.g., an FPGA or an ASIC).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. Inembodiments deploying a programmable computing system, it will beappreciated that both hardware and software architectures meritconsideration. Specifically, it will be appreciated that the choice ofwhether to implement certain functionality in permanently configuredhardware (e.g., an ASIC), in temporarily configured hardware (e.g., acombination of software and a programmable processor), or in acombination of permanently and temporarily configured hardware may be adesign choice. Below are set out hardware (e.g., machine) and softwarearchitectures that may be deployed, in various example embodiments.

Language

Although the embodiments of the present invention have been describedwith reference to specific example embodiments, it will be evident thatvarious modifications and changes may be made to these embodimentswithout departing from the broader scope of the inventive subjectmatter. Accordingly, the specification and drawings are to be regardedin an illustrative rather than a restrictive sense. The accompanyingdrawings that form a part hereof show by way of illustration, and not oflimitation, specific embodiments in which the subject matter may bepracticed. The embodiments illustrated are described in sufficientdetail to enable those skilled in the art to practice the teachingsdisclosed herein. Other embodiments may be used and derived therefrom,such that structural and logical substitutions and changes may be madewithout departing from the scope of this disclosure. This DetailedDescription, therefore, is not to be taken in a limiting sense, and thescope of various embodiments is defined only by the appended claims,along with the full range of equivalents to which such claims areentitled.

Such embodiments of the inventive subject matter may be referred toherein, individually and/or collectively, by the term “invention” merelyfor convenience and without intending to voluntarily limit the scope ofthis application to any single invention or inventive concept if morethan one is in fact disclosed. Thus, although specific embodiments havebeen illustrated and described herein, it should be appreciated that anyarrangement calculated to achieve the same purpose may be substitutedfor the specific embodiments shown. This disclosure is intended to coverany and all adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent, to those of skill inthe art, upon reviewing the above description.

All publications, patents, and patent documents referred to in thisdocument are incorporated by reference herein in their entirety, asthough individually incorporated by reference. In the event ofinconsistent usages between this document and those documents soincorporated by reference, the usage in the incorporated referencesshould be considered supplementary to that of this document; forirreconcilable inconsistencies, the usage in this document controls.

In this document, the terms “a” or “an” are used, as is common in patentdocuments, to include one or more than one, independent of any otherinstances or usages of “at least one” or “one or more.” In thisdocument, the term “or” is used to refer to a nonexclusive or, such that“A or B” includes “A but not B,” “B but not A,” and “A and B,” unlessotherwise indicated. In the appended claims, the terms “including” and“in which” are used as the plain-English equivalents of the respectiveterms “comprising” and “wherein.” Also, in the following claims, theterms “including” and “comprising” are open-ended; that is, a system,device, article, or process that includes elements in addition to thoselisted after such a term in a claim are still deemed to fall within thescope of that claim.

What is claimed is:
 1. A method implemented at a client device, themethod comprising: providing, to a management server and from the clientdevice, a request for data; receiving, from the management server inresponse to the request for the data, an identification of tilesassociated with the data; providing, to a first tile server and from theclient device, a request for the tiles; in response to failing toreceive the tiles from the first tile server within a threshold timeperiod from the request for the tiles: causing the client device totransmit a plurality of requests for the tiles, each request from theplurality of requests being directed to one of a plurality of tileservers, each request from the plurality of requests identifying thetiles that have been previously identified by the management server;receiving the tiles from a second tile server from among the pluralityof tile servers; and providing for display, at the client device, of avisual representation of the data using the tiles.
 2. The method ofclaim 1, wherein the data comprises a map of a geographic region.
 3. Themethod of claim 2, wherein each tile from among the tiles tile stores aportion of the map at a given zoom level as an image taking up apredefined area measured in pixels.
 4. The method of claim 1, whereinfailing to receive the tiles from the first tile server comprisesreceiving a failure message from the first tile server.
 5. The method ofclaim 1, further comprising: selecting the first tile server from a setof tile servers based on a geographic distance between the client deviceand the first tile server being less than a geographic distance betweenthe client device and each other tile server from among the set of tileservers.
 6. The method of claim 5, wherein the set of tile serverscomprises the first tile server and the plurality of tile servers.
 7. Anon-transitory machine-readable medium storing instructions which, whenexecuted by a client device, cause the client device to performoperations comprising: providing, to a management server and from theclient device, a request for data; receiving, from the management serverin response to the request for the data, an identification of tilesassociated with the data; providing, to a first tile server and from theclient device, a request for the tiles; in response to failing toreceive the tiles from the first tile server within a threshold timeperiod from the request for the tiles: causing the client device totransmit a plurality of requests for the tiles, each request from theplurality of requests being directed to one of a plurality of tileservers, each request from the plurality of requests identifying thetiles that have been previously identified by the management server;receiving the tiles from a second tile server from among the pluralityof tile servers; and providing for display, at the client device, of avisual representation of the data using the tiles.
 8. Themachine-readable medium of claim 7, wherein the data comprises a map ofa geographic region.
 9. The machine-readable medium of claim 8, whereineach tile from among the tiles tile stores a portion of the map at agiven zoom level as an image taking up a predefined area measured inpixels.
 10. The machine-readable medium of claim 7, wherein failing toreceive the tiles from the first tile server comprises receiving afailure message from the first tile server.
 11. The machine-readablemedium of claim 7, the operations further comprising: selecting thefirst tile server from a set of tile servers based on a geographicdistance between the client device and the first tile server being lessthan a geographic distance between the client device and each other tileserver from among the set of tile servers.
 12. The machine-readablemedium of claim 11, wherein the set of tile servers comprises the firsttile server and the plurality of tile servers.
 13. A system comprising:processing circuitry of a client device; and a memory storinginstructions which, when executed by the processing circuitry, cause theprocessing circuitry to perform operations comprising: providing, to amanagement server and from the client device, a request for data;receiving, from the management server in response to the request for thedata, an identification of tiles associated with the data; providing, toa first tile server and from the client device, a request for the tiles;in response to failing to receive the tiles from the first tile serverwithin a threshold time period from the request for the tiles: causingthe client device to transmit a plurality of requests for the tiles,each request from the plurality of requests being directed to one of aplurality of tile servers, each request from the plurality of requestsidentifying the tiles that have been previously identified by themanagement server; receiving the tiles from a second tile server fromamong the plurality of tile servers; and providing for display, at theclient device, of a visual representation of the data using the tiles.14. The system of claim 13, wherein the data comprises a map of ageographic region.
 15. The system of claim 14, wherein each tile fromamong the tiles tile stores a portion of the map at a given zoom levelas an image taking up a predefined area measured in pixels.
 16. Thesystem of claim 13, wherein failing to receive the tiles from the firsttile server comprises receiving a failure message from the first tileserver.
 17. The system of claim 13, the operations further comprising:selecting the first tile server from a set of tile servers based on ageographic distance between the client device and the first tile serverbeing less than a geographic distance between the client device and eachother tile server from among the set of tile servers.